from youtube_transcript_api import YouTubeTranscriptApi

def test_youtube_transcript_api_correct_usage(video_id):
    """
    测试使用youtube-transcript-api库获取字幕（正确用法）
    """
    print(f"测试使用youtube-transcript-api获取视频 {video_id} 的字幕...")
    
    try:
        # 方法1: 使用fetch方法
        print("方法1: 使用fetch方法")
        transcript = YouTubeTranscriptApi().fetch(video_id)
        print(f"成功获取到 {len(transcript)} 条字幕")
        print("前3条字幕:")
        for i, entry in enumerate(transcript[:3]):
            print(f"  {i+1}. {entry}")
        return transcript
    except Exception as e:
        print(f"使用fetch方法失败: {e}")
        
    try:
        # 方法2: 使用list方法获取字幕列表，然后获取字幕
        print("方法2: 使用list方法")
        transcript_list = YouTubeTranscriptApi().list(video_id)
        print("可用的字幕:")
        for transcript in transcript_list:
            print(f"  - {transcript.language} ({transcript.language_code})")
            
        # 获取英文字幕
        transcript = transcript_list.find_transcript(['en']).fetch()
        print(f"成功获取到 {len(transcript)} 条英文字幕")
        print("前3条字幕:")
        for i, entry in enumerate(transcript[:3]):
            print(f"  {i+1}. {entry}")
        return transcript
    except Exception as e:
        print(f"使用list方法失败: {e}")
        
    try:
        # 方法3: 直接指定语言
        print("方法3: 直接指定语言")
        transcript = YouTubeTranscriptApi().fetch(video_id, languages=['en'])
        print(f"成功获取到 {len(transcript)} 条英文字幕")
        print("前3条字幕:")
        for i, entry in enumerate(transcript[:3]):
            print(f"  {i+1}. {entry}")
        return transcript
    except Exception as e:
        print(f"直接指定语言也失败: {e}")
        
    return None

if __name__ == "__main__":
    test_youtube_transcript_api_correct_usage("Q0GPGvMu77w")